package cn.funeralobjects.youtube.dl.extension.repository;

import cn.funeralobjects.youtube.dl.extension.model.DownloadTask;

import java.util.List;

/**
 * @author FuneralObjects
 * Create date: 2020/4/8 1:55 AM
 */
public interface TaskRepository {

    /**
     * 获取所有任务
     *
     * @return 下载任务集合
     */
    List<DownloadTask> getAllTasks();

    /**
     * 根据id和format获取任务
     *
     * @param id     id
     * @param format format
     * @return 下载任务对象
     */
    DownloadTask getByIdAndFormat(String id, String format);

    /**
     * 添加一个任务到队尾
     *
     * @param task 任务
     */
    void push(DownloadTask task);

    /**
     * 根据id和format删除任务
     * @param id id
     * @param format format
     */
    void remove(String id, String format);

    /**
     * 从头部弹出一个任务
     * @return 任务
     */
    DownloadTask pop();
}
